perm filename SEC1[DOC,BGB] blob
sn#093415 filedate 1974-03-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ~I0,0λ15FA
C00004 00003 ~I0,0P1λ13FA
C00008 00004 1.7 Control, Meta, and Meta-Control Keys.
C00013 00005 1.12 The Extended Command Scanner.
C00015 00006 1.13 The Stack.
C00020 00007 1.17 Making a Cube Explicitly.
C00024 00008 1.19 Text Commands of GEOMED 1973.
C00027 ENDMK
C⊗;
~I0,0;λ15;FA
~JC;FBCONTENTS.
~JA;FA
PART I - GEOMED AS AN INTERACTIVE DRAWING PROGRAM.
1.0 PRIMER.
2.0 EXAMPLES.
3.0 GEOMETRIC COMMANDS.
4.0 TOPOLOGICAL COMMANDS.
5.0 INPUT/OUTPUT COMMANDS.
6.0 EDITOR CONTROL COMMANDS.
7.0 DISPLAY CONTROL COMMANDS.
8.0 FILE FORMATS.
9.0 COMMAND SUMMARY BY LEXICAL ORDER.
PART II - GEOMED AS A SAIL OR LISP ACCESSIBLE GRAPHICS COMMAND LANGUAGE.
1.0 A SIMPLE EXAMPLE.
2.0 LINK AND DATUM ACCESSING.
3.0 WINGED EDGE PRIMITIVES.
4.0 EULER MAKE PRIMITIVES.
5.0 EULER KILL PRIMITIVES.
6.0 EASY POLYHEDRON ROUTINES.
7.0 EUCLIDEAN TRANSFORMATIONS.
8.0 GEOMETRIC MEASURE ROUTINES.
9.0 BODY INTERSECTION AND CUTTING.
10.0 IMAGE FORMATION ROUTINES.
11.0 INPUT/OUTPUT ROUTINES.
12.0 AUXILLARY ROUTINES: DISPLAY AND ARITHMETIC.
PART III - INTERNAL GEOMED DOCUMENTATION.
1.0 DESCRIPTION OF SOURCE FILES.
2.0 HOW TO ASSEMBLE AND LOAD GEOMED.
3.0 HOW TO ASSEMBLE AND LOAD GEOMES.
4.0 HOW TO ASSEMBLE AND LOAD GEOMEL.
5.0 SUBROUTINE CALLING CONVENTION.
~I0,0;P1;λ13;FA
~JC;FA SECTION 1
~JC;FBPRIMER
~JU;FA
1.1 Purpose.
GEOMED is for making drawings, synthetic video images, and
3-D geometric models for the sake of computer vision.
1.2 Running GEOMED.
The system copy of GEOMED is started by typing "R GEOMED"
carriage return at a CRT display console (rather than a video
console). The program will display a rectangle, type an asterisk and
await single character commands. Typing additional carriage returns
will yield more asterisks showing that GEOMED is alive and listening.
1.3 Instant Cube.
Typing the character "∞", calls a macro that makes a cube.
Adjust the pots on the display console so that the cube looks right.
1.4 Translation.
~JA;λ5;F.
Type the character ":" to move the cube right (positive x axis).
Type the character ";" to move the cube left (negative x axis).
Type the character ")" to move the cube up (positive y axis).
Type the character "(" to move the cube down (negative y axis).
Type the character "*" to move the cube nearer (positive z axis).
Type the character "-" to move the cube away (negative z axis).
~JU;λ13;F.
Clearly these command characters are not mnemonics, they
were chosen because they do not require the TOP key and are
conveniently grouped in pairs under one's right hand.
1.5 Strength of Translation.
The distance the cube is moved on each command is called the
strength of translation or TDEL. The value of TDEL is displayed in
the upper right corner of the screen and is initially one foot. The
strength of translation is halved by typing the command character "/"
or doubled by typing "\".
1.6 World Frame of Reference.
The direction the cube moved was with respect to the world
frame of reference which is a right handed coordinate system. The
initial camera is positioned looking down the Z axis at the world
origin. The world origin is in the center of the display screen a
simulated sixteen feet away; and the positive world X axis is to your
right; and the positive world Y axis is upwards.
1.7 Control, Meta, and Meta-Control Keys.
Notice that the Stanford A.I. keyboard has four "shift" keys
labeled SHIFT, TOP, META & CONTROL. SHIFT only determines whether an
alphabetic letters is upper or lower case; GEOMED converts lower case
letters into upper so that the SHIFT key has no effect. The TOP key
allows two ASCII character codes to be on each physical key, this
doubling up on the physical keys is not important to GEOMED since
"TOP-E" can always be referred to as "@". Finally, of great
importance, the CONTROL and META keys add two extra bits to the 7-bit
ASCII code, so that a 9-bit character is formed. In this document
the characters "α", "β" and "ε" will be used as prefix abbreviations
for CONTROL, META and META-CONTROL keying of a character.
Furthermore, the command scanner accepts the characters "α", "β"
and "ε" as prefix modifiers that will add the appropriate control and
meta bits to the next character typed.
1.8 Question Mark "?" Prefix.
Typing the question mark charcter "?" followed by any
character will type a one line reminder of what commands are invoked
by that character.
1.9 Rotation.
The rotation command characters are the same as for
translation except you must hold the CONTROL key down or prefix the
command with an "α". Try rotating the instant cube about the X-axis
with "α:". The positive direction of rotation is counter-clockwise.
The negative direction of rotation is clockwise.
1.10 Strength of Rotation.
The strength of rotation is named RDEL, the value of RDEL is
displayed in two formats in the upper right hand corner of the
screen: as a pi fraction and in degrees, minutes, seconds. The
initial value of RDEL is π/4, 45 degrees. Analogous to translation,
the strength of rotation is halved or doubled by "α/" and "α\"
respectively.
1.11 Rotation Default.
Since a sequence of rotations is quite common, there is a way
to make the CTRL key be sticky. The usual Euclidean transformation
default is translation world frame; but after typing the "@" command
character, the Euclidean default is rotation world frame. Translation
default is restored by typing "!". The state of the Euclidean
transformation default is also displayed in the status in the upper
right hand corner of the screen. (The "≡" command disables the status
display, "≡" toggles).
1.12 The Extended Command Scanner.
The X-commands are executed by typing "X" followed by the first
three letters of a mnemonic (further letters are ignored) followed by
any necessary arguments. The command is terminated by a RETURN. The
arguments may be separated by any reasonable delimiters: space,
comma, etc. The following three "X" commands provide easy creation
of simple polyhedra:
X CUBE <DX width>,<DY height>,<DZ depth>
X BALL <radius>,<M longitudes>,<N latitudes>
X CYLN <radius>,<N sides>,<DZ length>
The CUBE command makes a right rectangular prism with width
height and depth as given. The BALL command makes a polyhedron that
approximates a sphere. The CYLN command makes a right prism that
approximates a circular cylinder.
~L0,-350;*FIG1;F.
1.13 The Stack.
GEOMED commands take their arguments from and leave their
results in a push down stack of bodies, faces, edges and vertices.
The contents of the stack are displayed on the left hand side of the
display screen. Having made a cube, you will have a B1 in the stack;
making a second cube will push a B2 into the stack. To retrieve B1
use the "↑" stack pop or the "α↑" stack rotate up or "α↓" stack
rotate down or "↔" the swap top of stack command. The "↓" command
pushs the stack down and places in the new top the entity that was
previously top of stack.
1.14 The Face, Edge and Vertex Rings.
A polyhedron consists of three circular double linked lists
(called rings); there is a ring of faces, a ring of edges and a ring
of vertices. The head of each ring is the body node. The rings can be
traveled by using the commands "<" and ">" to go forwards and back
through the face ring, the commands "≤" and "≥" for the edge ring, and
the commands "∨" and "∧" for the vertex ring. Notice that when a
face, edge or vertex node is in the top of the stack the
corresponding entity is intensified in the drawing.
1.15 Hidden Line Elimination.
Typing ALT-MODE causes your drawing to be displayed with its
hidden lines eliminated;
as is illustrated by the two pictures of a log cabin in the woods.
To stay in hidden line display mode use the
"_" underbar command; the "β_" returns the display mode default to
display all the lines. The hidden line eliminator, named OCCULT, does
not display overlapping polyhedra or concave faces correctly; and for the
sake of speed it does not check for these cases. The faces of a
polyhedra can be forced convex by applying the "$" command to a body
or a face.
1.16 Parts Tree Structure - The Attach and Detach Commands.
The parts' tree commands "A"
ATTACH and and "D" DETACH, allow bodies to be connected into a tree
structure without affecting their faces, edges or vertices. The "A"
attach command links the body in the top of the stack to the body in
the second stack position as a sub-part (or child). The detach
command unlinks a body from its parent. Certain operations such as
the Euclidean transformations apply to a body and all its
descendents.
~X0.45;L-315,-330;*HIDE1.PLT;L315,-330;*HIDE2.PLT;X1.0;F.
1.17 Making a Cube Explicitly.
After "∞" and "X CUBE", a third way to draw a cube will be
given to illustrate the primitive topology commands. Starting with a
fresh copy of GEOMED, type the command letters in the second column
to get the advertised results:
~λ5;JA;F.
1. V Vertex body creation.
2. :) Position the vertex into the first quadrant.
3. S;; Make an edge and vertex and move left.
4. S(( Edge vertex down.
5. S:: Edge vertex right.
6. J↑ Join the first and last vertices of the wire.
7. * Pull the face lamina towards you.
8. S Sweep the square face into a very thin solid.
9. --↑ Move the face away from you giving the cube depth.
10. @/):! Rotate the cube to a more familiar position.
~λ15;JU;F.
Three commands that have not been mentioned yet are: "V"
vertex body creation, "S" Sweep and "J" join two vertices with a new
edge. The "V" command takes no arguments and pushs a brand new body,
face and vertex into the stack. This degenerate point polyhedron
satisfies the Euler equation F-E+V=2 (1-0+1=2) and is always placed
at the world origin. The first three sweep commands in the example,
sweep a vertex polyhedron into a wire polyhedron by adding a new
vertex and a new edge; incidentally preserving Euler's equation as do
all GEOMED commands. The wire-sweep takes a Vertex argument, and
returns the new vertex. The new vertex has the same locus as the
argument vertex. After three sides of a square have been formed, the
"J" command creates a new face and a new edge between the first and
last vertex of the wire face. The wire-join case of the "J" command
takes a vertex argument and identifies it as the end of a wire and
knows enough to fetch the other end of that wire, as its second
argument.
1.18 Making a Solid of Rotation.
A solid of rotation can be made by sweeping a wire face
around and closing it with the "R" command. For example a dumbell
shaped object is formed by typing the following commands:
~λ5;JA;F.
1. V(((((: Get Vertex to starting position.
2. S:)S)S;)S)))) Lower bell.
3. S:)S)S;)↑ Upper Bell.
4. 7@S(R!↑ Rotate wire about Y-axis and complete solid.
~λ15;JU;L375,500;*CUBE.PLT;L250,-300;*DUMBEL.PLT;F.
1.19 Text Commands of GEOMED 1973.
Towards the end of 1973, text nodes and text commands were
added to GEOMED to demonstrate its potential value for mechanical
drawing. This work was done by Tovar Mock, and the
resulting alternate version of GEOMED is available on the system as
the program named "G".
Text nodes are created (or edited) by applying the "T"
command with a vertex in the top of stack.
The header of a text node list is called a Y-node
and can be reached from a text node by the "≤" command; Y-nodes carry
their own 3-D space locus and so can be moved about using the
Euclidean transformation. The resulting data structures can only be
save and restored by means of the "εO" and "εI" commands, which
dump and restore D3D files. The D3D format
I/O doesn't exist in present GEOMED. The "T"
command, accepts text by means of an editor resembling the system's
editors TV and E; whcih use the system line edit commands. The
particular line edit mode commands of G are:
<CR> Forward 1 line
<VT> Backward 1 line
αε> Forward 4 lines
αε< Backward 4 lines
αε≥ Forward 16 lines
αε≤ Backward 16 lines
εD Delete a line
εI Enter line insert mode
αZ Concatenate next line with current line
αεE Return to GEOMED
αεV Update display
αε/ Shrink character size.
αε\ Expand character size.
The best way to get a labeled drawing into hardcopy is to "P"
plot is out of G into a plot file, ".PLT"; and then to use PLTVEC to
output the drawing on the Cal Comp Plotter or to use XAP to output
the drawing to the XGP, Xerox Graphics Printer. See section 5.2,
for details on how to make hardcopy drawings.